package com.dingding.manager.core.util;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.StringUtils;

/**
 * @ClassName:  IpUtil   
 * @Description: 获取客户端请求ip
 * @author: szc 
 * @date:   2017年1月12日 下午7:25:10
 * @version V2.6.4
 */
public class IpUtil {
	
	/**
	 * @Title: getIp   
	 * @Description: 获取客户端请求ip
	 * @author: szc 
	 * @param request
	 * @return 当前请求客户端ip
	 * @date:   2017年1月12日 下午7:14:02   
	 * @since V  2.6.4    
	 */
	public static String getIp(HttpServletRequest request) {
		String ip = request.getHeader("X-Forwarded-For");
		if (StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
			// 多次反向代理后会有多个ip值，第一个ip才是真实ip
			int index = ip.indexOf(",");
			if (index != -1) {
				return ip.substring(0, index);
			} else {
				return ip;
			}
		}
		ip = request.getHeader("X-Real-IP");
		if (StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
			return ip;
		}
		return request.getRemoteAddr();
	}
}
